home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // DVDFR.com - POUR UTILISATION PERSONNELLE UNIQUEMENT ! Cliquez sur "Editor" pour plus d'infos
-
- (***** LICENCE *************************************
- * Ce script permet de rΘcupΘrer les donnΘes du *
- * site de DVDFR pour une utilisation *
- * personnelle uniquement. Ces donnΘes ne *
- * peuvent pas Ωtre rΘcupΘrΘes ni exploitΘes *
- * dans un but commercial. *
- * En utilisant ce script vous dΘclarez accepter *
- * ces conditions et endosser toute *
- * responsabilitΘ dans la maniΦre dont vous *
- * utilisez ces donnΘes *
- * *
- ***************************************************)
-
- (***************************************************
- * Movie importation script for: *
- * DVDFR.com, http://www.dvdfr.com *
- * *
- * (c) 2002-2004 Antoine Potten software@antp.be *
- * Improved by Fabrice FERT : *
- * - more fields filled *
- * *
- * For use with Ant Movie Catalog 3.4.1 *
- * (there is a bug in the 3.4.0 that prevents *
- * from using this script without serious *
- * problems. Please upgrade if you have an *
- * old version) *
- * www.antp.be/software/moviecatalog *
- * *
- * This program is free software; you can *
- * redistribute it and/or modify it under the *
- * terms of the GNU General Public License as *
- * published by the Free Software Foundation; *
- * either version 2 of the License, or (at your *
- * option) any later version. *
- ***************************************************)
-
- program DVDFR;
- const
- MustImportBitrate = False; // set this to True if you want to take the bitrate information from the site
- MustImportDescr = True;
- BaseURL = 'http://www.dvdfr.com';
- // BaseURL = 'http://dvdfr.solexine.fr';
- var
- MovieName: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- Line, Tags, Caption: string;
- BeginPos, EndPos: Integer;
- begin
- Line := GetPage(Address);
- if Pos('<title>Dvdfr.com - Recherche DVDFr', Line) > 0 then
- begin
- PickTreeClear;
- if Pos('Vos critΦres de recherche n''ont produit aucun rΘsultat.', Line) = 0 then
- begin
- Page := TStringList.Create;
- EndPos := Pos('TITLE="Page prΘcΘdente"', Line) + 5;
- if EndPos > 5 then
- begin
- BeginPos := EndPos - 70;
- Tags := Copy(Line, BeginPos, EndPos - BeginPos);
- BeginPos := Pos('="..', Tags) + 4;
- EndPos := Pos('" TITLE', Tags);
- PickTreeAdd('Page prΘcΘdente', BaseURL + Copy(Tags, BeginPos, EndPos - BeginPos));
- end;
- EndPos := Pos('TITLE="Page suivante"', Line) + 5;
- if EndPos > 5 then
- begin
- BeginPos := EndPos - 70;
- Tags := Copy(Line, BeginPos, EndPos - BeginPos);
- BeginPos := Pos('="..', Tags) + 4;
- EndPos := Pos('" TITLE', Tags);
- PickTreeAdd('Page suivante', BaseURL + Copy(Tags, BeginPos, EndPos - BeginPos));
- end;
- BeginPos := Pos('<table class="tableSearchResult"', Line);
- Delete(Line, 1, BeginPos + Length(Tags) - 1);
- BeginPos := Pos('</TR>', Line);
- Delete(Line, 1, BeginPos + 5);
- EndPos := Pos('</table>', Line);
- Delete(Line, EndPos, Length(Line));
- while Pos('<TR', Line) > 0 do
- begin
- BeginPos := Pos('<TR', Line);
- EndPos := Pos('</TR>', Line);
- Tags := Copy(Line, BeginPos, EndPos - BeginPos);
- if Pos('CLASS="tableHeaderLine"', Tags) > 0 then
- begin // "Letter"
- EndPos := Pos('</span>', Tags);
- PickTreeAdd('Films commenτant par "' + Copy(Tags, EndPos - 1, 1) + '" :', '');
- end else
- begin // Movie
- Page.Text := Tags;
- Tags := Page.GetString(2);
- Delete(Tags, 1, 1);
- BeginPos := Pos('="..', Tags) + 4;
- EndPos := Pos('">', Tags);
- Address := Copy(Tags, BeginPos, EndPos - BeginPos);
- HTMLRemoveTags(Tags);
- Caption := Trim(Tags);
- Tags := Page.GetString(3);
- Delete(Tags, 1, 1);
- HTMLRemoveTags(Tags);
- Tags := Trim(Tags);
- if Tags <> ' ' then
- Caption := Caption + ' (' + Tags + ')';
- Tags := Page.GetString(4);
- Delete(Tags, 1, 1);
- HTMLRemoveTags(Tags);
- Tags := Trim(Tags);
- if Tags <> ' ' then
- Caption := Caption + ', ' + Tags;
- PickTreeAdd(Caption, BaseURL + Address);
- end;
- Delete(Line, 1, Pos('</TR>', Line) + 5);
- end;
- Page.Free;
- end;
- if PickTreeExec(Address) then
- begin
- AnalyzePage(Address);
- end;
- end else
- if Pos('<title>Dvdfr.com - Fiche DVD', Line) > 0 then
- begin
- SetField(fieldURL, Address);
- AnalyzeMoviePage(Line);
- end;
- end;
-
- procedure AnalyzeMoviePage(PageContents: string);
- var
- Line, Value: string;
- LineNr, BeginPos, EndPos, BeginPos2, EndPos2, i: Integer;
- Page: TStringList;
- begin
- // Picture
- BeginPos := Pos('src="../images/dvd/cover', PageContents);
- EndPos := Pos('<div class="dvd_categorie">', PageContents);
- Line := Copy(PageContents, BeginPos, EndPos - BeginPos);
- EndPos := Pos('" ', Line);
- Value := Copy(Line, 8, EndPos - 8);
- GetPicture(BaseURL + Value, False);
- // Category
- BeginPos := Pos('<A class="home_a" TITLE="Rechercher les autres films de mΩme catΘgorie"', PageContents);
- EndPos := Pos('<br><img src="../images/filet_categoriedvd.gif"', PageContents);
- Value := Copy(PageContents, BeginPos, EndPos - BeginPos);
- HTMLRemoveTags(Value);
- SetField(fieldCategory, Trim(AnsiMixedCase(AnsiLowerCase(Value), ' ')));
- //
- Page := TStringList.Create;
- BeginPos := Pos('class="dvd_title"', PageContents)-20;
- EndPos := Pos('</html>', PageContents);
- Page.Text := Copy(PageContents, BeginPos, EndPos);
- // Titles
- LineNr := FindLine('<div class="dvd_title">', Page, 0);
- if LineNr > -1 then
- begin
- Value := Trim(Page.GetString(LineNr + 1));
- HTMLRemoveTags(Value);
- SetField(fieldOriginalTitle, Value);
- Value := Trim(Page.GetString(LineNr));
- HTMLRemoveTags(Value);
- Value := AnsiUpFirstLetter(AnsiLowerCase(Value));
- if GetField(fieldOriginalTitle) = '' then
- SetField(fieldOriginalTitle, Value)
- else
- SetField(fieldTranslatedTitle, Value);
- // Country
- Line := Page.GetString(LineNr + 2);
- BeginPos := Pos('">', Line) + 2;
- EndPos := Pos(' , ', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldCountry, Value);
- BeginPos := EndPos + 3;
- // Year
- EndPos := Pos('<br>', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldYear, Value);
- // Producer
- Delete(Line, 1, EndPos - 1);
- HTMLRemoveTags(Line);
- SetField(fieldProducer, Line);
- end;
- // Note
- LineNr := FindLine('/images/vote_dvdfr.gif', Page, LineNr);
- if LineNr > -1 then
- begin
- Value := Trim(Page.GetString(LineNr));
- HTMLRemoveTags(Value);
- Value := StringReplace(Value, ' ', '');
- EndPos := Pos(',', Value);
- Line := value;
- if EndPos > 0 then
- Line := Copy(Value, 1, EndPos - 1);
- SetField(fieldRating, Line);
- end;
- // Description
- if MustImportDescr then
- begin
- LineNr := FindLine('<div class="dvd_subtitle">Synopsis</div>', Page, LineNr);
- if LineNr > -1 then
- begin
- LineNr := LineNr + 1;
- Line := Trim(Page.GetString(LineNr));
- Value := '';
- while (Pos('</div>', Line) = 0) and (Line <> '') do
- begin
- Value := Value + Line + ' ';
- LineNr := LineNr + 1;
- Line := Trim(Page.GetString(LineNr));
- end;
- Value := Value + Line + ' ';
- HTMLRemoveTags(Value);
- SetField(fieldDescription, Value);
- end;
- end;
- // Director
- LineNr := FindLine('<div class="dvd_subtitle">RΘalisation</div>', Page, LineNr);
- if LineNr > -1 then
- begin
- Value := Trim(Page.GetString(LineNr + 1));
- HTMLRemoveTags(Value);
- SetField(fieldDirector, Value);
- end;
- // Actors
- LineNr := FindLine('<div class="dvd_subtitle">Avec...</div>', Page, LineNr);
- if LineNr > -1 then
- begin
- Value := StringReplace(Trim(Page.GetString(LineNr + 1)), '<br>', ',');
- HTMLRemoveTags(Value);
- SetField(fieldActors, Value);
- end;
- // Media Label - Reference
- LineNr := FindLine('<div class="dvd_subtitle">RΘfΘrence</div>', Page, LineNr);
- if LineNr > -1 then
- begin
- Value := Trim(Page.GetString(LineNr + 1));
- HTMLRemoveTags(Value);
- SetField(fieldMedia, Value);
- end;
- // Length
- LineNr := FindLine('<img alt="DurΘe"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := Pos('>', Line) + 1;
- EndPos := Pos(' min', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldLength, Value);
- end;
- // Discs
- LineNr := FindLine('<img alt="Nombre de disques"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := Pos('>', Line) + 1;
- EndPos := Pos('</', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldDisks, Value);
- end;
- // Bitrate
- if MustImportBitrate then
- begin
- LineNr := FindLine('<img alt="Bitrate moyen"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := Pos('<td>', Line) + 4;
- EndPos := Pos(' ', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- Value := StringReplace(Value, ',', '') + '0';
- SetField(fieldVideoBitrate, Value);
- end;
- end;
- // Media type
- LineNr := FindLine('<img alt="Format DVD"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 1);
- BeginPos := Pos('>', Line) + 1;
- EndPos := Pos('</', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldMediaType, Value);
- end;
- // Comments
- Line := Page.Text;
- BeginPos := Pos('</span><br>', Line) + 12;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('<br>', Line);
- Value := Copy(Line, 1, EndPos - 1);
- HTMLRemoveTags(Value);
- Value := 'SupplΘments:' + #13#10 + Trim(Value);
- SetField(fieldComments, Value);
- // Video format
- LineNr := FindLine('title="Format vidΘo"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 2);
- BeginPos := Pos('alt="', Line) + 17;
- EndPos := Pos('" title=', Line);
- Value := Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldResolution, Value);
- end;
- // Zone
- LineNr := FindLine('title="Zone(s) du DVD"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr + 2);
- BeginPos := Pos('alt="', Line) + 5;
- EndPos := Pos('" title=', Line);
- Value := 'DVD ' + Copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldVideoFormat, Value);
- end;
- // Standard
- LineNr := FindLine('title="Standard vidΘo du DVD"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := StringReplace(Trim(Page.GetString(LineNr + 2)), #9, '');
- HTMLRemoveTags(Line);
- Value := Value + ' - Standard ' + Line;
- SetField(fieldVideoFormat, Value);
- end;
- // Audio format
- LineNr := FindLine('title="SpΘcifications audio"', Page, LineNr);
- if LineNr > -1 then
- begin
- BeginPos := LineNr + 2;
- LineNr := FindLine('</table></td></tr>', Page, LineNr);
- if LineNr > -1 then
- begin
- EndPos := LineNr;
- Value := '';
- Line := 'DVD ';
- for i := BeginPos to EndPos do
- begin
- BeginPos2 := Pos('<small>', Page.GetString(i));
- EndPos2 := Pos('</small>', Page.GetString(i));
- if ((BeginPos2 > 0) and (EndPos2 > 0)) then
- begin
- if not(Value = '') then
- Value := Value + ' - ';
- Value := Value + Copy(Page.GetString(i), BeginPos2 + 7, EndPos2 - (BeginPos2 + 7));
- end;
- BeginPos2 := Pos('alt="', Page.GetString(i));
- EndPos2 := Pos('" title="', Page.GetString(i));
- if ((BeginPos2 > 0) and (EndPos2 > 0)) then
- begin
- if not(Line = 'DVD ') then
- Line := Line + ' - ';
- Line := Line + Copy(Page.GetString(i), BeginPos2 + 5, EndPos2 - (BeginPos2 + 5));
- end;
- end;
- SetField(fieldAudioFormat, Line);
- SetField(fieldLanguages, Value);
- end;
- end;
- // Sous-titres
- LineNr := FindLine('title="Sous-titres disponibles"', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := StringReplace(Trim(Page.GetString(LineNr + 3)), #9, '');
- HTMLRemoveTags(Line);
- SetField(fieldSubtitles, Line);
- end;
- //
- Page.Free;
- DisplayResults;
- end;
-
- begin
- if CheckVersion(3,4,1) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('DVDFR.com Import', 'Entrez le titre du film :', MovieName) then
- begin
- AnalyzePage(BaseURL + '/search/search.php?multiname='+UrlEncode(MovieName));
- end;
- end else
- ShowMessage('Ce script requiert la version 3.4.1 ou supΘrieure de Ant Movie Catalog.');
- end.
-
-